/*
* This file is a part of the open-eBackup project.
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
* If a copy of the MPL was not distributed with this file, You can obtain one at
* http://mozilla.org/MPL/2.0/.
*
* Copyright (c) [2024] Huawei Technologies Co.,Ltd.
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
*/
package openbackup.system.base.config;

import openbackup.system.base.common.typehandler.DateTypeHandler;
import openbackup.system.base.common.typehandler.TimeTypeHandler;
import openbackup.system.base.common.typehandler.TimestampTypeHandler;

import org.apache.ibatis.type.TypeHandlerRegistry;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 功能描述 全局应用TimeZoneTypeHandler
 *
 */
@Configuration
public class MyBatisConfig {
    /**
     * 全局register
     *
     * @return registry
     */
    @Bean
    public TypeHandlerRegistry typeHandlerRegistry() {
        TypeHandlerRegistry registry = new TypeHandlerRegistry();
        registry.register(DateTypeHandler.class);
        registry.register(TimestampTypeHandler.class);
        registry.register(TimeTypeHandler.class);
        return registry;
    }

    /**
     * 加载DateTypeHandler的bean
     *
     * @return TimeZoneTypeHandler
     */
    @Bean
    public DateTypeHandler dateTypeHandler() {
        return new DateTypeHandler();
    }

    /**
     * 加载TimestampTypeHandler的bean
     *
     * @return TimeZoneTypeHandler
     */
    @Bean
    public TimestampTypeHandler timestampTypeHandler() {
        return new TimestampTypeHandler();
    }

    /**
     * 加载TimeTypeHandler的bean
     *
     * @return TimeZoneTypeHandler
     */
    @Bean
    public TimeTypeHandler timeTypeHandler() {
        return new TimeTypeHandler();
    }
}
